<?xml version="1.0" encoding="UTF-8"?>
<model modelUID="r:9bc4a8e3-4385-42f4-a359-427b65e232d7(graphviz.generator.template.main@generator)">
  <persistence version="3" />
  <refactoringHistory />
  <language namespace="b401a680-8325-4110-8fd3-84331ff25bef(jetbrains.mps.lang.generator)" />
  <language namespace="f3061a53-9226-4cc5-a443-f952ceaf5816(jetbrains.mps.baseLanguage)" />
  <language namespace="83888646-71ce-4f1c-9c53-c54016f6ad4f(jetbrains.mps.baseLanguage.collections)" />
  <language namespace="13744753-c81f-424a-9c1b-cf8943bf4e86(jetbrains.mps.lang.sharedConcepts)" />
  <language namespace="bbf93cf7-0007-4aef-bd6c-05945f01448d(graphviz)" />
  <language namespace="a83c3bd0-2f7e-4ba1-8373-12d49e99f57e(jetbrains.mps.gtext)" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c895902e8(jetbrains.mps.lang.generator.structure)" version="2" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c895902e2(jetbrains.mps.lang.generator.constraints)" version="16" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c895902db(jetbrains.mps.baseLanguage.blTypes.constraints)" version="0" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c89590301(jetbrains.mps.lang.smodel.structure)" version="16" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c89590338(jetbrains.mps.baseLanguage.closures.structure)" version="3" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c89590292(jetbrains.mps.lang.structure.structure)" version="0" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c895902f3(jetbrains.mps.lang.generator.generationContext.structure)" version="0" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c89590334(jetbrains.mps.baseLanguage.closures.constraints)" version="2" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c895902c1(jetbrains.mps.baseLanguage.constraints)" version="83" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c895902ca(jetbrains.mps.baseLanguage.structure)" version="3" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c895902ba(jetbrains.mps.lang.sharedConcepts.constraints)" version="0" />
  <languageAspect modelUID="r:19389f68-3774-458d-83d3-54809ca8ac6b(graphviz.structure)" version="5" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c8959028c(jetbrains.mps.lang.structure.constraints)" version="11" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c89590283(jetbrains.mps.lang.core.constraints)" version="2" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c89590288(jetbrains.mps.lang.core.structure)" version="0" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c895902bc(jetbrains.mps.lang.sharedConcepts.structure)" version="0" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c895902fb(jetbrains.mps.lang.smodel.constraints)" version="21" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c89590571(jetbrains.mps.gtext.constraints)" version="8" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c89590575(jetbrains.mps.gtext.structure)" version="0" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c8959033d(jetbrains.mps.lang.annotations.structure)" version="0" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c89590345(jetbrains.mps.lang.pattern.structure)" version="0" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c89590340(jetbrains.mps.lang.pattern.constraints)" version="2" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c89590328(jetbrains.mps.baseLanguage.collections.constraints)" version="6" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c8959034b(jetbrains.mps.lang.quotation.structure)" version="0" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c895902ae(jetbrains.mps.lang.typesystem.constraints)" version="17" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c8959032e(jetbrains.mps.baseLanguage.collections.structure)" version="7" />
  <languageAspect modelUID="r:00000000-0000-4000-0000-011c895902b4(jetbrains.mps.lang.typesystem.structure)" version="3" />
  <devkit namespace="2677cb18-f558-4e33-bc38-a5139cee06dc(jetbrains.mps.devkit.language-design)" />
  <maxImportIndex value="6" />
  <import index="1" modelUID="r:19389f68-3774-458d-83d3-54809ca8ac6b(graphviz.structure)" version="5" />
  <import index="3" modelUID="r:de702fbc-02b7-479d-9e91-a09499959c2f(graphviz.behavior)" version="-1" />
  <import index="4" modelUID="f:java_stub#java.lang(java.lang@java_stub)" version="-1" />
  <import index="6" modelUID="r:3f1fdabc-721b-4f0f-a395-72c3a7e642c5(graphviz.generator.template.utilities)" version="-1" />
  <node type="jetbrains.mps.lang.generator.structure.MappingConfiguration" id="4768206649134730213">
    <property name="name" value="main" />
    <node role="preMappingScript" type="jetbrains.mps.lang.generator.structure.MappingScriptReference" id="8577380457334529549">
      <link role="mappingScript" targetNodeId="8577380457334529550" resolveInfo="script" />
    </node>
    <node role="reductionMappingRule" type="jetbrains.mps.lang.generator.structure.Reduction_MappingRule" id="8577380457334162717">
      <link role="applicableConcept" targetNodeId="1.4683729127882822187" resolveInfo="GVNodeDeclaration" />
      <node role="ruleConsequence" type="jetbrains.mps.lang.generator.structure.TemplateDeclarationReference" id="8577380457334164899">
        <link role="template" targetNodeId="8577380457334164897" resolveInfo="reduce_node_declaration" />
      </node>
    </node>
    <node role="reductionMappingRule" type="jetbrains.mps.lang.generator.structure.Reduction_MappingRule" id="8577380457334529544">
      <link role="applicableConcept" targetNodeId="1.4683729127882960942" resolveInfo="GVNodeReference" />
      <node role="ruleConsequence" type="jetbrains.mps.lang.generator.structure.TemplateDeclarationReference" id="8577380457334529548">
        <link role="template" targetNodeId="8577380457334529546" resolveInfo="reduce_node_reference" />
      </node>
    </node>
    <node role="reductionMappingRule" type="jetbrains.mps.lang.generator.structure.Reduction_MappingRule" id="8577380457334266939">
      <link role="applicableConcept" targetNodeId="1.4768206649132996859" resolveInfo="GVEdgeExpression" />
      <node role="ruleConsequence" type="jetbrains.mps.lang.generator.structure.TemplateDeclarationReference" id="8577380457334266943">
        <link role="template" targetNodeId="8577380457334266941" resolveInfo="reduce_edge_expression" />
      </node>
    </node>
    <node role="reductionMappingRule" type="jetbrains.mps.lang.generator.structure.Reduction_MappingRule" id="2224471876220300837">
      <link role="applicableConcept" targetNodeId="1.2602392581780422891" resolveInfo="GVSubgraphBlock" />
      <node role="ruleConsequence" type="jetbrains.mps.lang.generator.structure.TemplateDeclarationReference" id="2224471876220303019">
        <link role="template" targetNodeId="2224471876220303017" resolveInfo="reduce_subgraph" />
      </node>
    </node>
    <node role="rootMappingRule" type="jetbrains.mps.lang.generator.structure.Root_MappingRule" id="4768206649134730214">
      <link role="applicableConcept" targetNodeId="1.4683729127880614440" resolveInfo="GVDocument" />
      <link role="template" targetNodeId="4768206649134747457" />
    </node>
  </node>
  <visible index="2" modelUID="r:00000000-0000-4000-0000-011c89590288(jetbrains.mps.lang.core.structure)" />
  <node type="jetbrains.mps.gtext.structure.GDocument" id="4768206649134747457">
    <property name="documentName" value="name" />
    <property name="extension" value="dot" />
    <node role="rootTemplateAnnotation$attribute" type="jetbrains.mps.lang.generator.structure.RootTemplateAnnotation" id="4768206649134747459">
      <link role="applicableConcept" targetNodeId="1.4683729127880614440" resolveInfo="GVDocument" />
    </node>
    <node role="propertyMacro$property_attribute$documentName" type="jetbrains.mps.lang.generator.structure.PropertyMacro" id="4768206649134747461">
      <node role="propertyValueFunction" type="jetbrains.mps.lang.generator.structure.PropertyMacro_GetPropertyValue" id="4768206649134747462">
        <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4768206649134747463">
          <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="4768206649134840232">
            <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4768206649134840234">
              <node role="operand" type="jetbrains.mps.lang.generator.structure.TemplateFunctionParameter_sourceNode" id="4768206649134840233" />
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.SPropertyAccess" id="4768206649134840238">
                <link role="property" targetNodeId="2v.1169194664001" resolveInfo="name" />
              </node>
            </node>
          </node>
        </node>
      </node>
    </node>
    <node role="item" type="jetbrains.mps.gtext.structure.GLine" id="4768206649135847692">
      <node role="item" type="jetbrains.mps.gtext.structure.GText" id="4768206649135847694">
        <property name="text" value="graph or digraph" />
        <node role="propertyMacro$property_attribute$text" type="jetbrains.mps.lang.generator.structure.PropertyMacro" id="2224471876220917361">
          <node role="propertyValueFunction" type="jetbrains.mps.lang.generator.structure.PropertyMacro_GetPropertyValue" id="2224471876220917362">
            <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2224471876220917363">
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="2224471876220919542">
                <node role="condition" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876220919551">
                  <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876220919546">
                    <node role="operand" type="jetbrains.mps.lang.generator.structure.TemplateFunctionParameter_sourceNode" id="2224471876220919545" />
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="2224471876220919550">
                      <link role="link" targetNodeId="1.4683729127880614492" />
                    </node>
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.SPropertyAccess" id="2224471876220919555">
                    <link role="property" targetNodeId="1.8577380457334266973" resolveInfo="directed" />
                  </node>
                </node>
                <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2224471876220919544">
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.ReturnStatement" id="2224471876220919562">
                    <node role="expression" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="2224471876220919557">
                      <property name="value" value="digraph " />
                    </node>
                  </node>
                </node>
                <node role="ifFalseStatement" type="jetbrains.mps.baseLanguage.structure.BlockStatement" id="2224471876220919558">
                  <node role="statements" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2224471876220919559">
                    <node role="statement" type="jetbrains.mps.baseLanguage.structure.ReturnStatement" id="2224471876220919563">
                      <node role="expression" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="2224471876220919561">
                        <property name="value" value="graph " />
                      </node>
                    </node>
                  </node>
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
      <node role="item" type="jetbrains.mps.gtext.structure.GText" id="4768206649135948283">
        <property name="text" value="name" />
        <node role="propertyMacro$property_attribute$text" type="jetbrains.mps.lang.generator.structure.PropertyMacro" id="4768206649135948286">
          <node role="propertyValueFunction" type="jetbrains.mps.lang.generator.structure.PropertyMacro_GetPropertyValue" id="4768206649135948287">
            <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="4768206649135948288">
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="4768206649135950467">
                <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="4768206649135950469">
                  <node role="operand" type="jetbrains.mps.lang.generator.structure.TemplateFunctionParameter_sourceNode" id="4768206649135950468" />
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.SPropertyAccess" id="4768206649135950473">
                    <link role="property" targetNodeId="2v.1169194664001" resolveInfo="name" />
                  </node>
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
      <node role="item" type="jetbrains.mps.gtext.structure.GText" id="4768206649135948285">
        <property name="text" value=" {" />
      </node>
    </node>
    <node role="item" type="jetbrains.mps.gtext.structure.GText" id="2224471876218514477">
      <property name="text" value="children" />
      <node role="nodeMacro$attribute" type="jetbrains.mps.lang.generator.structure.CopySrcListMacro" id="2224471876218516672">
        <node role="sourceNodesQuery" type="jetbrains.mps.lang.generator.structure.SourceSubstituteMacro_SourceNodesQuery" id="2224471876218516673">
          <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2224471876218516674">
            <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="2224471876218516675">
              <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876218516682">
                <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876218516677">
                  <node role="operand" type="jetbrains.mps.lang.generator.structure.TemplateFunctionParameter_sourceNode" id="2224471876218516676" />
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="2224471876218516681">
                    <link role="link" targetNodeId="1.4683729127880614492" />
                  </node>
                </node>
                <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkListAccess" id="2224471876218516686">
                  <link role="link" targetNodeId="1.8577380457328886014" />
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
    </node>
    <node role="item" type="jetbrains.mps.gtext.structure.GLine" id="4768206649135847700">
      <node role="item" type="jetbrains.mps.gtext.structure.GText" id="4768206649135847701">
        <property name="text" value="}" />
      </node>
    </node>
  </node>
  <node type="jetbrains.mps.lang.generator.structure.TemplateDeclaration" id="8577380457334164897">
    <property name="name" value="reduce_node_declaration" />
    <link role="applicableConcept" targetNodeId="1.4683729127882822187" resolveInfo="GVNodeDeclaration" />
    <node role="contentNode" type="jetbrains.mps.gtext.structure.GLine" id="2224471876218618058">
      <node role="item" type="jetbrains.mps.gtext.structure.GText" id="2224471876219651960">
        <property name="text" value="indent" />
        <node role="propertyMacro$property_attribute$text" type="jetbrains.mps.lang.generator.structure.PropertyMacro" id="2224471876219651961">
          <node role="propertyValueFunction" type="jetbrains.mps.lang.generator.structure.PropertyMacro_GetPropertyValue" id="2224471876219651962">
            <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2224471876219651963">
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="2224471876219651965">
                <node role="expression" type="jetbrains.mps.baseLanguage.structure.StaticMethodCall" id="2224471876219794197">
                  <link role="baseMethodDeclaration" targetNodeId="6.2224471876219794181" resolveInfo="getIndentationForNode" />
                  <link role="classConcept" targetNodeId="6.2224471876219691716" resolveInfo="GraphvizUtilities" />
                  <node role="actualArgument" type="jetbrains.mps.lang.generator.structure.TemplateFunctionParameter_sourceNode" id="2224471876219794198" />
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
      <node role="item" type="jetbrains.mps.gtext.structure.GText" id="2224471876218620280">
        <property name="text" value="node_name" />
        <node role="propertyMacro$property_attribute$text" type="jetbrains.mps.lang.generator.structure.PropertyMacro" id="2224471876218620281">
          <node role="propertyValueFunction" type="jetbrains.mps.lang.generator.structure.PropertyMacro_GetPropertyValue" id="2224471876218620282">
            <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2224471876218620283">
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="2224471876218620284">
                <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876218620285">
                  <node role="operand" type="jetbrains.mps.lang.generator.structure.TemplateFunctionParameter_sourceNode" id="2224471876218620286" />
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.SPropertyAccess" id="2224471876218620287">
                    <link role="property" targetNodeId="2v.1169194664001" resolveInfo="name" />
                  </node>
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
      <node role="item" type="jetbrains.mps.gtext.structure.GText" id="2224471876218721997">
        <property name="text" value=" [" />
        <node role="nodeMacro$attribute" type="jetbrains.mps.lang.generator.structure.IfMacro" id="8133902317013740839">
          <node role="conditionFunction" type="jetbrains.mps.lang.generator.structure.IfMacro_Condition" id="8133902317013740840">
            <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8133902317013740841">
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="8133902317013740842">
                <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8133902317013740843">
                  <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8133902317013740844">
                    <node role="operand" type="jetbrains.mps.lang.generator.structure.TemplateFunctionParameter_sourceNode" id="8133902317013740845" />
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="8133902317013740846">
                      <link role="baseMethodDeclaration" targetNodeId="3.8577380457333914749" resolveInfo="getNeededStyles" />
                      <node role="actualArgument" type="jetbrains.mps.lang.smodel.structure.SEnumOperationInvocation" id="8133902317013740847">
                        <link role="enumDeclaration" targetNodeId="1.8577380457330095601" resolveInfo="graph_component" />
                        <node role="operation" type="jetbrains.mps.lang.smodel.structure.SEnum_MemberOperation" id="8133902317013740848">
                          <link role="member" targetNodeId="1.8577380457330095602" />
                        </node>
                      </node>
                    </node>
                  </node>
                  <node role="operation" type="jetbrains.mps.baseLanguage.collections.structure.IsNotEmptyOperation" id="8133902317013740849" />
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
      <node role="item" type="jetbrains.mps.gtext.structure.GText" id="2224471876218620290">
        <property name="text" value="attributes" />
        <node role="nodeMacro$attribute" type="jetbrains.mps.lang.generator.structure.LoopMacro" id="2224471876218620291">
          <node role="sourceNodesQuery" type="jetbrains.mps.lang.generator.structure.SourceSubstituteMacro_SourceNodesQuery" id="2224471876218620292">
            <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2224471876218620293">
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.ReturnStatement" id="2224471876218620294">
                <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876218620295">
                  <node role="operand" type="jetbrains.mps.lang.generator.structure.TemplateFunctionParameter_sourceNode" id="2224471876218620296" />
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="2224471876218620297">
                    <link role="baseMethodDeclaration" targetNodeId="3.8577380457333914749" resolveInfo="getNeededStyles" />
                    <node role="actualArgument" type="jetbrains.mps.lang.smodel.structure.SEnumOperationInvocation" id="2224471876218620298">
                      <link role="enumDeclaration" targetNodeId="1.8577380457330095601" resolveInfo="graph_component" />
                      <node role="operation" type="jetbrains.mps.lang.smodel.structure.SEnum_MemberOperation" id="2224471876218620299">
                        <link role="member" targetNodeId="1.8577380457330095602" />
                      </node>
                    </node>
                  </node>
                </node>
              </node>
            </node>
          </node>
        </node>
        <node role="propertyMacro$property_attribute$text" type="jetbrains.mps.lang.generator.structure.PropertyMacro" id="2224471876218620300">
          <node role="propertyValueFunction" type="jetbrains.mps.lang.generator.structure.PropertyMacro_GetPropertyValue" id="2224471876218620301">
            <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2224471876218620302">
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="2224471876218620303">
                <node role="expression" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="2224471876218620304">
                  <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="2224471876218620305">
                    <property name="value" value="," />
                  </node>
                  <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="2224471876218620306">
                    <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="2224471876218620307">
                      <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876218620308">
                        <node role="operand" type="jetbrains.mps.lang.generator.structure.TemplateFunctionParameter_sourceNode" id="2224471876218620309" />
                        <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="2224471876218620310">
                          <link role="baseMethodDeclaration" targetNodeId="3.8577380457329033621" resolveInfo="getKey" />
                        </node>
                      </node>
                      <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="2224471876218620311">
                        <property name="value" value="=" />
                      </node>
                    </node>
                    <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876218620312">
                      <node role="operand" type="jetbrains.mps.lang.generator.structure.TemplateFunctionParameter_sourceNode" id="2224471876218620313" />
                      <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="2224471876218620314">
                        <link role="baseMethodDeclaration" targetNodeId="3.8577380457329033643" resolveInfo="getValue" />
                      </node>
                    </node>
                  </node>
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
      <node role="item" type="jetbrains.mps.gtext.structure.GText" id="2224471876218721999">
        <property name="text" value="]" />
        <node role="nodeMacro$attribute" type="jetbrains.mps.lang.generator.structure.IfMacro" id="8133902317013743031">
          <node role="conditionFunction" type="jetbrains.mps.lang.generator.structure.IfMacro_Condition" id="8133902317013743032">
            <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8133902317013743033">
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="8133902317013743034">
                <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8133902317013743035">
                  <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="8133902317013743036">
                    <node role="operand" type="jetbrains.mps.lang.generator.structure.TemplateFunctionParameter_sourceNode" id="8133902317013743037" />
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ConceptMethodCall" id="8133902317013743038">
                      <link role="baseMethodDeclaration" targetNodeId="3.8577380457333914749" resolveInfo="getNeededStyles" />
                      <node role="actualArgument" type="jetbrains.mps.lang.smodel.structure.SEnumOperationInvocation" id="8133902317013743039">
                        <link role="enumDeclaration" targetNodeId="1.8577380457330095601" resolveInfo="graph_component" />
                        <node role="operation" type="jetbrains.mps.lang.smodel.structure.SEnum_MemberOperation" id="8133902317013743040">
                          <link role="member" targetNodeId="1.8577380457330095602" />
                        </node>
                      </node>
                    </node>
                  </node>
                  <node role="operation" type="jetbrains.mps.baseLanguage.collections.structure.IsNotEmptyOperation" id="8133902317013743041" />
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
      <node role="item" type="jetbrains.mps.gtext.structure.GText" id="8133902317013743029">
        <property name="text" value=";" />
      </node>
      <node role="templateFragment$attribute" type="jetbrains.mps.lang.generator.structure.TemplateFragment" id="2224471876218620319" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.generator.structure.TemplateDeclaration" id="8577380457334266941">
    <property name="name" value="reduce_edge_expression" />
    <link role="applicableConcept" targetNodeId="1.4768206649132996859" resolveInfo="GVEdgeExpression" />
    <node role="contentNode" type="jetbrains.mps.gtext.structure.GItemList" id="2224471876218620452">
      <node role="item" type="jetbrains.mps.gtext.structure.GText" id="2224471876220094231">
        <property name="text" value="indent" />
        <node role="propertyMacro$property_attribute$text" type="jetbrains.mps.lang.generator.structure.PropertyMacro" id="2224471876220094232">
          <node role="propertyValueFunction" type="jetbrains.mps.lang.generator.structure.PropertyMacro_GetPropertyValue" id="2224471876220094233">
            <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2224471876220094234">
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="2224471876220199275">
                <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="2224471876220199276">
                  <property name="name" value="result" />
                  <node role="type" type="jetbrains.mps.baseLanguage.structure.StringType" id="2224471876220199277" />
                  <node role="initializer" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="2224471876220199279">
                    <property name="value" value="" />
                  </node>
                </node>
              </node>
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="2224471876220199263">
                <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2224471876220199264">
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="2224471876220199280">
                    <node role="expression" type="jetbrains.mps.baseLanguage.structure.AssignmentExpression" id="2224471876220199282">
                      <node role="lValue" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="2224471876220199281">
                        <link role="variableDeclaration" targetNodeId="2224471876220199276" resolveInfo="result" />
                      </node>
                      <node role="rValue" type="jetbrains.mps.baseLanguage.structure.StaticMethodCall" id="2224471876220199285">
                        <link role="baseMethodDeclaration" targetNodeId="6.2224471876219794181" resolveInfo="getIndentationForNode" />
                        <link role="classConcept" targetNodeId="6.2224471876219691716" resolveInfo="GraphvizUtilities" />
                        <node role="actualArgument" type="jetbrains.mps.lang.generator.structure.TemplateFunctionParameter_sourceNode" id="2224471876220199286" />
                      </node>
                    </node>
                  </node>
                </node>
                <node role="condition" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="2224471876220199267">
                  <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876220199268">
                    <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876220199269">
                      <node role="operand" type="jetbrains.mps.lang.generator.structure.TemplateFunctionParameter_sourceNode" id="2224471876220199270" />
                      <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_GetParentOperation" id="2224471876220199271" />
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="2224471876220199272">
                      <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="2224471876220199273">
                        <link role="conceptDeclaration" targetNodeId="1.4768206649132996859" resolveInfo="GVEdgeExpression" />
                      </node>
                    </node>
                  </node>
                </node>
              </node>
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.ReturnStatement" id="2224471876220199288">
                <node role="expression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="2224471876220199290">
                  <link role="variableDeclaration" targetNodeId="2224471876220199276" resolveInfo="result" />
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
      <node role="item" type="jetbrains.mps.gtext.structure.GText" id="2224471876218620453">
        <property name="text" value="left" />
        <node role="nodeMacro$attribute" type="jetbrains.mps.lang.generator.structure.CopySrcNodeMacro" id="2224471876218620454">
          <node role="sourceNodeQuery" type="jetbrains.mps.lang.generator.structure.SourceSubstituteMacro_SourceNodeQuery" id="2224471876218620455">
            <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2224471876218620456">
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="2224471876218620457">
                <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876218620458">
                  <node role="operand" type="jetbrains.mps.lang.generator.structure.TemplateFunctionParameter_sourceNode" id="2224471876218620459" />
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="2224471876218620460">
                    <link role="link" targetNodeId="1.4768206649133437465" />
                  </node>
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
      <node role="item" type="jetbrains.mps.gtext.structure.GText" id="2224471876218620461">
        <property name="text" value="-&gt; or --" />
        <node role="propertyMacro$property_attribute$text" type="jetbrains.mps.lang.generator.structure.PropertyMacro" id="2224471876218620462">
          <node role="propertyValueFunction" type="jetbrains.mps.lang.generator.structure.PropertyMacro_GetPropertyValue" id="2224471876218620463">
            <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2224471876218620464">
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="2224471876218620465">
                <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="2224471876218620466">
                  <property name="name" value="result" />
                  <node role="type" type="jetbrains.mps.baseLanguage.structure.StringType" id="2224471876218620467" />
                </node>
              </node>
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="2224471876218620468">
                <node role="condition" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876218620469">
                  <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876218620470">
                    <node role="operand" type="jetbrains.mps.lang.generator.structure.TemplateFunctionParameter_sourceNode" id="2224471876218620471" />
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_GetAncestorOperation" id="2224471876218620472">
                      <node role="parameter" type="jetbrains.mps.lang.smodel.structure.OperationParm_Concept" id="2224471876218620473">
                        <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="2224471876218620474">
                          <link role="conceptDeclaration" targetNodeId="1.4683729127880614470" resolveInfo="GVGraph" />
                        </node>
                      </node>
                    </node>
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.SPropertyAccess" id="2224471876218620475">
                    <link role="property" targetNodeId="1.8577380457334266973" resolveInfo="directed" />
                  </node>
                </node>
                <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2224471876218620476">
                  <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="2224471876218620477">
                    <node role="expression" type="jetbrains.mps.baseLanguage.structure.AssignmentExpression" id="2224471876218620478">
                      <node role="lValue" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="2224471876218620479">
                        <link role="variableDeclaration" targetNodeId="2224471876218620466" resolveInfo="result" />
                      </node>
                      <node role="rValue" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="2224471876218620480">
                        <property name="value" value=" -&gt; " />
                      </node>
                    </node>
                  </node>
                </node>
                <node role="ifFalseStatement" type="jetbrains.mps.baseLanguage.structure.BlockStatement" id="2224471876218620481">
                  <node role="statements" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2224471876218620482">
                    <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="2224471876218620483">
                      <node role="expression" type="jetbrains.mps.baseLanguage.structure.AssignmentExpression" id="2224471876218620484">
                        <node role="lValue" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="2224471876218620485">
                          <link role="variableDeclaration" targetNodeId="2224471876218620466" resolveInfo="result" />
                        </node>
                        <node role="rValue" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="2224471876218620486">
                          <property name="value" value=" -- " />
                        </node>
                      </node>
                    </node>
                  </node>
                </node>
              </node>
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.ReturnStatement" id="2224471876218620487">
                <node role="expression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="2224471876218620488">
                  <link role="variableDeclaration" targetNodeId="2224471876218620466" resolveInfo="result" />
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
      <node role="item" type="jetbrains.mps.gtext.structure.GText" id="2224471876218620489">
        <property name="text" value="right" />
        <node role="nodeMacro$attribute" type="jetbrains.mps.lang.generator.structure.CopySrcNodeMacro" id="2224471876218620490">
          <node role="sourceNodeQuery" type="jetbrains.mps.lang.generator.structure.SourceSubstituteMacro_SourceNodeQuery" id="2224471876218620491">
            <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2224471876218620492">
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="2224471876218620493">
                <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876218620494">
                  <node role="operand" type="jetbrains.mps.lang.generator.structure.TemplateFunctionParameter_sourceNode" id="2224471876218620495" />
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="2224471876218620496">
                    <link role="link" targetNodeId="1.4768206649133437468" />
                  </node>
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
      <node role="item" type="jetbrains.mps.gtext.structure.GText" id="2224471876218620497">
        <property name="text" value=";" />
        <node role="nodeMacro$attribute" type="jetbrains.mps.lang.generator.structure.IfMacro" id="2224471876218620498">
          <node role="conditionFunction" type="jetbrains.mps.lang.generator.structure.IfMacro_Condition" id="2224471876218620499">
            <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2224471876218620500">
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="2224471876218620501">
                <node role="expression" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="2224471876218620502">
                  <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876218620503">
                    <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876218620504">
                      <node role="operand" type="jetbrains.mps.lang.generator.structure.TemplateFunctionParameter_sourceNode" id="2224471876218620505" />
                      <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_GetParentOperation" id="2224471876218620506" />
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="2224471876218620507">
                      <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="2224471876218620508">
                        <link role="conceptDeclaration" targetNodeId="1.4768206649132996859" resolveInfo="GVEdgeExpression" />
                      </node>
                    </node>
                  </node>
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
      <node role="item" type="jetbrains.mps.gtext.structure.GNewLine" id="2224471876219030394">
        <node role="nodeMacro$attribute" type="jetbrains.mps.lang.generator.structure.IfMacro" id="2224471876219030396">
          <node role="conditionFunction" type="jetbrains.mps.lang.generator.structure.IfMacro_Condition" id="2224471876219030397">
            <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2224471876219030398">
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="2224471876219030399">
                <node role="expression" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="2224471876219030400">
                  <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876219030401">
                    <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876219030402">
                      <node role="operand" type="jetbrains.mps.lang.generator.structure.TemplateFunctionParameter_sourceNode" id="2224471876219030403" />
                      <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_GetParentOperation" id="2224471876219030404" />
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="2224471876219030405">
                      <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="2224471876219030406">
                        <link role="conceptDeclaration" targetNodeId="1.4768206649132996859" resolveInfo="GVEdgeExpression" />
                      </node>
                    </node>
                  </node>
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
      <node role="templateFragment$attribute" type="jetbrains.mps.lang.generator.structure.TemplateFragment" id="2224471876218620514" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.generator.structure.TemplateDeclaration" id="8577380457334529546">
    <property name="name" value="reduce_node_reference" />
    <link role="applicableConcept" targetNodeId="1.4683729127882960942" resolveInfo="GVNodeReference" />
    <node role="contentNode" type="jetbrains.mps.gtext.structure.GItemList" id="2224471876218306091">
      <node role="item" type="jetbrains.mps.gtext.structure.GText" id="2224471876218306094">
        <property name="text" value="node_name" />
        <node role="propertyMacro$property_attribute$text" type="jetbrains.mps.lang.generator.structure.PropertyMacro" id="2224471876218306104">
          <node role="propertyValueFunction" type="jetbrains.mps.lang.generator.structure.PropertyMacro_GetPropertyValue" id="2224471876218306105">
            <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2224471876218306106">
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="2224471876218308285">
                <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876218308292">
                  <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876218308287">
                    <node role="operand" type="jetbrains.mps.lang.generator.structure.TemplateFunctionParameter_sourceNode" id="2224471876218308286" />
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="2224471876218308291">
                      <link role="link" targetNodeId="1.4683729127882960943" />
                    </node>
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.SPropertyAccess" id="2224471876218308296">
                    <link role="property" targetNodeId="2v.1169194664001" resolveInfo="name" />
                  </node>
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
      <node role="item" type="jetbrains.mps.gtext.structure.GText" id="2224471876218306101">
        <property name="text" value=":port" />
        <node role="nodeMacro$attribute" type="jetbrains.mps.lang.generator.structure.IfMacro" id="2224471876218308298">
          <node role="conditionFunction" type="jetbrains.mps.lang.generator.structure.IfMacro_Condition" id="2224471876218308299">
            <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2224471876218308300">
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="2224471876218308301">
                <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876218308308">
                  <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876218308303">
                    <node role="operand" type="jetbrains.mps.lang.generator.structure.TemplateFunctionParameter_sourceNode" id="2224471876218308302" />
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="2224471876218308307">
                      <link role="link" targetNodeId="1.8577380457326839333" />
                    </node>
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsNotNullOperation" id="2224471876218308312" />
                </node>
              </node>
            </node>
          </node>
        </node>
        <node role="propertyMacro$property_attribute$text" type="jetbrains.mps.lang.generator.structure.PropertyMacro" id="2224471876218308313">
          <node role="propertyValueFunction" type="jetbrains.mps.lang.generator.structure.PropertyMacro_GetPropertyValue" id="2224471876218308314">
            <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2224471876218308315">
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="2224471876218308316">
                <node role="expression" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="2224471876218308318">
                  <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876218308849">
                    <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876218308327">
                      <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876218308322">
                        <node role="operand" type="jetbrains.mps.lang.generator.structure.TemplateFunctionParameter_sourceNode" id="2224471876218308321" />
                        <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="2224471876218308326">
                          <link role="link" targetNodeId="1.8577380457326839333" />
                        </node>
                      </node>
                      <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkAccess" id="2224471876218308331">
                        <link role="link" targetNodeId="1.8577380457326839332" />
                      </node>
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.SPropertyAccess" id="2224471876218308853">
                      <link role="property" targetNodeId="2v.1169194664001" resolveInfo="name" />
                    </node>
                  </node>
                  <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="2224471876218308317">
                    <property name="value" value=":" />
                  </node>
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
      <node role="item" type="jetbrains.mps.gtext.structure.GText" id="2224471876218306103">
        <property name="text" value=":compass" />
        <node role="nodeMacro$attribute" type="jetbrains.mps.lang.generator.structure.IfMacro" id="2224471876218308855">
          <node role="conditionFunction" type="jetbrains.mps.lang.generator.structure.IfMacro_Condition" id="2224471876218308856">
            <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2224471876218308857">
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="2224471876218308858">
                <node role="expression" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="2224471876218308894">
                  <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876218308896">
                    <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876218308897">
                      <node role="operand" type="jetbrains.mps.lang.generator.structure.TemplateFunctionParameter_sourceNode" id="2224471876218308898" />
                      <node role="operation" type="jetbrains.mps.lang.smodel.structure.SPropertyAccess" id="2224471876218308899">
                        <link role="property" targetNodeId="1.2602392581781342264" resolveInfo="compass_port" />
                      </node>
                    </node>
                    <node role="operation" type="jetbrains.mps.baseLanguage.structure.InstanceMethodCallOperation" id="2224471876218308900">
                      <link role="baseMethodDeclaration" targetNodeId="4.~String.equals(java.lang.Object):boolean" resolveInfo="equals" />
                      <node role="actualArgument" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876218308901">
                        <node role="operand" type="jetbrains.mps.lang.smodel.structure.SEnumOperationInvocation" id="2224471876218308902">
                          <link role="enumDeclaration" targetNodeId="1.2602392581780891729" resolveInfo="compass_port" />
                          <node role="operation" type="jetbrains.mps.lang.smodel.structure.SEnum_MemberOperation" id="2224471876218308903">
                            <link role="member" targetNodeId="1.2602392581781492801" />
                          </node>
                        </node>
                        <node role="operation" type="jetbrains.mps.lang.smodel.structure.EnumMember_ValueOperation" id="2224471876218308904" />
                      </node>
                    </node>
                  </node>
                </node>
              </node>
            </node>
          </node>
        </node>
        <node role="propertyMacro$property_attribute$text" type="jetbrains.mps.lang.generator.structure.PropertyMacro" id="2224471876218308906">
          <node role="propertyValueFunction" type="jetbrains.mps.lang.generator.structure.PropertyMacro_GetPropertyValue" id="2224471876218308907">
            <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2224471876218308908">
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="2224471876218308909">
                <node role="expression" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="2224471876218308911">
                  <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876218308915">
                    <node role="operand" type="jetbrains.mps.lang.generator.structure.TemplateFunctionParameter_sourceNode" id="2224471876218308914" />
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.SPropertyAccess" id="2224471876218308919">
                      <link role="property" targetNodeId="1.2602392581781342264" resolveInfo="compass_port" />
                    </node>
                  </node>
                  <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="2224471876218308910">
                    <property name="value" value=":" />
                  </node>
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
      <node role="templateFragment$attribute" type="jetbrains.mps.lang.generator.structure.TemplateFragment" id="2224471876218306100" />
    </node>
  </node>
  <node type="jetbrains.mps.lang.generator.structure.MappingScript" id="8577380457334529550">
    <property name="name" value="replace_node_declarations_in_edge_expressions" />
    <property name="scriptKind" value="pre_processing" />
    <node role="codeBlock" type="jetbrains.mps.lang.generator.structure.MappingScript_CodeBlock" id="8577380457335039895">
      <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8577380457335039896">
        <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="8577380457335039897">
          <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="8577380457335039898">
            <property name="name" value="nodes" />
            <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeListType" id="8577380457335039899">
              <link role="elementConcept" targetNodeId="1.4683729127882822187" resolveInfo="GVNodeDeclaration" />
            </node>
            <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876217471338">
              <node role="operand" type="jetbrains.mps.lang.sharedConcepts.structure.ConceptFunctionParameter_model" id="8577380457335039902" />
              <node role="operation" type="jetbrains.mps.lang.smodel.structure.Model_NodesOperation" id="2224471876217471343">
                <link role="concept" targetNodeId="1.4683729127882822187" resolveInfo="GVNodeDeclaration" />
              </node>
            </node>
          </node>
        </node>
        <node role="statement" type="jetbrains.mps.baseLanguage.collections.structure.ForEachStatement" id="8577380457335039918">
          <node role="variable" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariable" id="8577380457335039919">
            <property name="name" value="node" />
          </node>
          <node role="inputSequence" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="8577380457335039923">
            <link role="variableDeclaration" targetNodeId="8577380457335039898" resolveInfo="documents" />
          </node>
          <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="8577380457335039921">
            <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="2224471876217471347">
              <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2224471876217471349">
                <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="2224471876217471377">
                  <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="2224471876217471378">
                    <property name="name" value="declaration" />
                    <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="2224471876217471379">
                      <link role="concept" targetNodeId="1.4683729127882822187" resolveInfo="GVNodeDeclaration" />
                    </node>
                    <node role="initializer" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariableReference" id="2224471876217471381">
                      <link role="variable" targetNodeId="8577380457335039919" resolveInfo="node" />
                    </node>
                  </node>
                </node>
                <node role="statement" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclarationStatement" id="2224471876217471433">
                  <node role="localVariableDeclaration" type="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" id="2224471876217471434">
                    <property name="name" value="parent" />
                    <node role="type" type="jetbrains.mps.lang.smodel.structure.SNodeType" id="2224471876217471435" />
                    <node role="initializer" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876217471440">
                      <node role="operand" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariableReference" id="2224471876217471437">
                        <link role="variable" targetNodeId="8577380457335039919" resolveInfo="node" />
                      </node>
                      <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_GetParentOperation" id="2224471876217471445" />
                    </node>
                  </node>
                </node>
                <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="2224471876217471383">
                  <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876217471387">
                    <node role="operand" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariableReference" id="2224471876217471384">
                      <link role="variable" targetNodeId="8577380457335039919" resolveInfo="node" />
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_ReplaceWithAnotherOperation" id="2224471876217471393">
                      <node role="replacementNode" type="jetbrains.mps.lang.quotation.structure.Quotation" id="2224471876217471395">
                        <node role="quotedNode" type="graphviz.structure.GVNodeReference" id="2224471876217471397">
                          <node role="referenceAntiquotation$link_attribute$declaration" type="jetbrains.mps.lang.quotation.structure.ReferenceAntiquotation" id="2224471876217471398">
                            <node role="expression" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariableReference" id="2224471876217471400">
                              <link role="variable" targetNodeId="8577380457335039919" resolveInfo="node" />
                            </node>
                          </node>
                        </node>
                      </node>
                    </node>
                  </node>
                </node>
                <node role="statement" type="jetbrains.mps.baseLanguage.structure.WhileStatement" id="2224471876217471425">
                  <node role="condition" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="2224471876217471446">
                    <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876217471449">
                      <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="2224471876217471448">
                        <link role="variableDeclaration" targetNodeId="2224471876217471434" resolveInfo="parent" />
                      </node>
                      <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="2224471876217471453">
                        <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="2224471876217471455">
                          <link role="conceptDeclaration" targetNodeId="1.8577380457328886011" resolveInfo="GVGraphStatementBlock" />
                        </node>
                      </node>
                    </node>
                  </node>
                  <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2224471876217471427">
                    <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="2224471876217471456">
                      <node role="expression" type="jetbrains.mps.baseLanguage.structure.AssignmentExpression" id="2224471876217471458">
                        <node role="lValue" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="2224471876217471457">
                          <link role="variableDeclaration" targetNodeId="2224471876217471434" resolveInfo="parent" />
                        </node>
                        <node role="rValue" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876217471462">
                          <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="2224471876217471461">
                            <link role="variableDeclaration" targetNodeId="2224471876217471434" resolveInfo="parent" />
                          </node>
                          <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_GetParentOperation" id="2224471876217471466" />
                        </node>
                      </node>
                    </node>
                  </node>
                </node>
                <node role="statement" type="jetbrains.mps.baseLanguage.structure.AssertStatement" id="2224471876217471468">
                  <node role="condition" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876217471471">
                    <node role="operand" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="2224471876217471470">
                      <link role="variableDeclaration" targetNodeId="2224471876217471434" resolveInfo="parent" />
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="2224471876217471475">
                      <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="2224471876217471487">
                        <link role="conceptDeclaration" targetNodeId="1.8577380457328886011" resolveInfo="GVGraphStatementBlock" />
                      </node>
                    </node>
                  </node>
                </node>
                <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="2224471876217471479">
                  <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876217881902">
                    <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876217471488">
                      <node role="operand" type="jetbrains.mps.lang.smodel.structure.SNodeTypeCastExpression" id="2224471876217471485">
                        <link role="concept" targetNodeId="1.8577380457328886011" resolveInfo="GVGraphStatementBlock" />
                        <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="2224471876217471480">
                          <link role="variableDeclaration" targetNodeId="2224471876217471434" resolveInfo="parent" />
                        </node>
                      </node>
                      <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkListAccess" id="2224471876217471492">
                        <link role="link" targetNodeId="1.8577380457328886014" />
                      </node>
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.LinkList_AddChildOperation" id="2224471876217881906">
                      <node role="childNode" type="jetbrains.mps.baseLanguage.structure.LocalVariableReference" id="2224471876217884087">
                        <link role="variableDeclaration" targetNodeId="2224471876217471378" resolveInfo="declaration" />
                      </node>
                    </node>
                  </node>
                </node>
              </node>
              <node role="condition" type="jetbrains.mps.baseLanguage.structure.NotExpression" id="2224471876217471368">
                <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876217471370">
                  <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876217471371">
                    <node role="operand" type="jetbrains.mps.baseLanguage.collections.structure.ForEachVariableReference" id="2224471876217471372">
                      <link role="variable" targetNodeId="8577380457335039919" resolveInfo="node" />
                    </node>
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_GetParentOperation" id="2224471876217471373" />
                  </node>
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" id="2224471876217471374">
                    <node role="conceptArgument" type="jetbrains.mps.lang.smodel.structure.RefConcept_Reference" id="2224471876217471376">
                      <link role="conceptDeclaration" targetNodeId="1.8577380457328886011" resolveInfo="GVGraphStatementBlock" />
                    </node>
                  </node>
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
    </node>
  </node>
  <node type="jetbrains.mps.lang.generator.structure.TemplateDeclaration" id="2224471876220303017">
    <property name="name" value="reduce_subgraph" />
    <link role="applicableConcept" targetNodeId="1.2602392581780422891" resolveInfo="GVSubgraphBlock" />
    <node role="contentNode" type="jetbrains.mps.gtext.structure.GDocument" id="2224471876220507466">
      <property name="documentName" value="dummy" />
      <node role="item" type="jetbrains.mps.gtext.structure.GLine" id="2224471876220507472">
        <node role="item" type="jetbrains.mps.gtext.structure.GText" id="2224471876220511147">
          <property name="text" value="indent" />
          <node role="propertyMacro$property_attribute$text" type="jetbrains.mps.lang.generator.structure.PropertyMacro" id="2224471876220511148">
            <node role="propertyValueFunction" type="jetbrains.mps.lang.generator.structure.PropertyMacro_GetPropertyValue" id="2224471876220511149">
              <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2224471876220511150">
                <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="2224471876220612540">
                  <node role="expression" type="jetbrains.mps.baseLanguage.structure.StaticMethodCall" id="2224471876220612542">
                    <link role="baseMethodDeclaration" targetNodeId="6.2224471876219794181" resolveInfo="getIndentationForNode" />
                    <link role="classConcept" targetNodeId="6.2224471876219691716" resolveInfo="GraphvizUtilities" />
                    <node role="actualArgument" type="jetbrains.mps.lang.generator.structure.TemplateFunctionParameter_sourceNode" id="2224471876220612543" />
                  </node>
                </node>
              </node>
            </node>
          </node>
        </node>
        <node role="item" type="jetbrains.mps.gtext.structure.GText" id="2224471876220507473">
          <property name="text" value="subgraph " />
        </node>
        <node role="item" type="jetbrains.mps.gtext.structure.GText" id="2224471876221021193">
          <property name="text" value="name" />
          <node role="nodeMacro$attribute" type="jetbrains.mps.lang.generator.structure.IfMacro" id="2224471876221021197">
            <node role="conditionFunction" type="jetbrains.mps.lang.generator.structure.IfMacro_Condition" id="2224471876221021198">
              <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2224471876221021199">
                <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="2224471876221023378">
                  <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876221023385">
                    <node role="operand" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876221023380">
                      <node role="operand" type="jetbrains.mps.lang.generator.structure.TemplateFunctionParameter_sourceNode" id="2224471876221023379" />
                      <node role="operation" type="jetbrains.mps.lang.smodel.structure.SPropertyAccess" id="2224471876221023384">
                        <link role="property" targetNodeId="2v.1169194664001" resolveInfo="name" />
                      </node>
                    </node>
                    <node role="operation" type="jetbrains.mps.baseLanguage.structure.IsNotEmptyOperation" id="2224471876221023389" />
                  </node>
                </node>
              </node>
            </node>
          </node>
          <node role="propertyMacro$property_attribute$text" type="jetbrains.mps.lang.generator.structure.PropertyMacro" id="2224471876221023393">
            <node role="propertyValueFunction" type="jetbrains.mps.lang.generator.structure.PropertyMacro_GetPropertyValue" id="2224471876221023394">
              <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2224471876221023395">
                <node role="statement" type="jetbrains.mps.baseLanguage.structure.IfStatement" id="2224471876221023408">
                  <node role="ifTrue" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2224471876221023409">
                    <node role="statement" type="jetbrains.mps.baseLanguage.structure.ReturnStatement" id="2224471876221023418">
                      <node role="expression" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="2224471876221127429">
                        <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="2224471876221023431">
                          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="2224471876221023430">
                            <property name="value" value="cluster" />
                          </node>
                          <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876221023435">
                            <node role="operand" type="jetbrains.mps.lang.generator.structure.TemplateFunctionParameter_sourceNode" id="2224471876221023434" />
                            <node role="operation" type="jetbrains.mps.lang.smodel.structure.SPropertyAccess" id="2224471876221023439">
                              <link role="property" targetNodeId="2v.1169194664001" resolveInfo="name" />
                            </node>
                          </node>
                        </node>
                        <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="2224471876221127432">
                          <property name="value" value="" />
                        </node>
                      </node>
                    </node>
                  </node>
                  <node role="condition" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876221023413">
                    <node role="operand" type="jetbrains.mps.lang.generator.structure.TemplateFunctionParameter_sourceNode" id="2224471876221023412" />
                    <node role="operation" type="jetbrains.mps.lang.smodel.structure.SPropertyAccess" id="2224471876221023417">
                      <link role="property" targetNodeId="1.2602392581780422893" resolveInfo="clustered" />
                    </node>
                  </node>
                  <node role="ifFalseStatement" type="jetbrains.mps.baseLanguage.structure.BlockStatement" id="2224471876221023420">
                    <node role="statements" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2224471876221023421">
                      <node role="statement" type="jetbrains.mps.baseLanguage.structure.ReturnStatement" id="2224471876221023422">
                        <node role="expression" type="jetbrains.mps.baseLanguage.structure.PlusExpression" id="2224471876221127425">
                          <node role="rightExpression" type="jetbrains.mps.baseLanguage.structure.StringLiteral" id="2224471876221127428">
                            <property name="value" value=" " />
                          </node>
                          <node role="leftExpression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876221127422">
                            <node role="operand" type="jetbrains.mps.lang.generator.structure.TemplateFunctionParameter_sourceNode" id="2224471876221127423" />
                            <node role="operation" type="jetbrains.mps.lang.smodel.structure.SPropertyAccess" id="2224471876221127424">
                              <link role="property" targetNodeId="2v.1169194664001" resolveInfo="name" />
                            </node>
                          </node>
                        </node>
                      </node>
                    </node>
                  </node>
                </node>
              </node>
            </node>
          </node>
        </node>
        <node role="item" type="jetbrains.mps.gtext.structure.GText" id="2224471876221021195">
          <property name="text" value="{" />
        </node>
        <node role="templateFragment$attribute" type="jetbrains.mps.lang.generator.structure.TemplateFragment" id="2224471876220507476" />
      </node>
      <node role="item" type="jetbrains.mps.gtext.structure.GLine" id="2224471876220507470">
        <node role="item" type="jetbrains.mps.gtext.structure.GText" id="2224471876220507475">
          <property name="text" value="children" />
        </node>
        <node role="templateFragment$attribute" type="jetbrains.mps.lang.generator.structure.TemplateFragment" id="2224471876220507477" />
        <node role="nodeMacro$attribute" type="jetbrains.mps.lang.generator.structure.CopySrcListMacro" id="2224471876220813519">
          <node role="sourceNodesQuery" type="jetbrains.mps.lang.generator.structure.SourceSubstituteMacro_SourceNodesQuery" id="2224471876220813520">
            <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2224471876220813521">
              <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="2224471876220815700">
                <node role="expression" type="jetbrains.mps.baseLanguage.structure.DotExpression" id="2224471876220815702">
                  <node role="operand" type="jetbrains.mps.lang.generator.structure.TemplateFunctionParameter_sourceNode" id="2224471876220815701" />
                  <node role="operation" type="jetbrains.mps.lang.smodel.structure.SLinkListAccess" id="2224471876220815706">
                    <link role="link" targetNodeId="1.8577380457328886014" />
                  </node>
                </node>
              </node>
            </node>
          </node>
        </node>
      </node>
      <node role="item" type="jetbrains.mps.gtext.structure.GLine" id="2224471876220507468">
        <node role="item" type="jetbrains.mps.gtext.structure.GText" id="2224471876220612545">
          <property name="text" value="indent" />
          <node role="propertyMacro$property_attribute$text" type="jetbrains.mps.lang.generator.structure.PropertyMacro" id="2224471876220612546">
            <node role="propertyValueFunction" type="jetbrains.mps.lang.generator.structure.PropertyMacro_GetPropertyValue" id="2224471876220612547">
              <node role="body" type="jetbrains.mps.baseLanguage.structure.StatementList" id="2224471876220612548">
                <node role="statement" type="jetbrains.mps.baseLanguage.structure.ExpressionStatement" id="2224471876220612549">
                  <node role="expression" type="jetbrains.mps.baseLanguage.structure.StaticMethodCall" id="2224471876220612551">
                    <link role="baseMethodDeclaration" targetNodeId="6.2224471876219794181" resolveInfo="getIndentationForNode" />
                    <link role="classConcept" targetNodeId="6.2224471876219691716" resolveInfo="GraphvizUtilities" />
                    <node role="actualArgument" type="jetbrains.mps.lang.generator.structure.TemplateFunctionParameter_sourceNode" id="2224471876220612552" />
                  </node>
                </node>
              </node>
            </node>
          </node>
        </node>
        <node role="item" type="jetbrains.mps.gtext.structure.GText" id="2224471876220507474">
          <property name="text" value="}" />
        </node>
        <node role="templateFragment$attribute" type="jetbrains.mps.lang.generator.structure.TemplateFragment" id="2224471876220507478" />
      </node>
    </node>
  </node>
</model>

